predicates
mcd(pri, seg, res)
fatorial(num,num)
sumatoria(num,num)
multisuma(pri,seg,res)
exponente(pri,seg,res)
run
case(string)
goal
run .
clauses
/* VENTANA */
run :-
clearwindow,
makewindow(2,3,14,"
UNIVERSIDAD SANTIAGO DE CALI ",0,0,24,79),
write('\n','\n'),
write("
******************** OPERACIONES ********************",'\n','\n'),
write("
A. Multiplicaci¢n m*n con sumas ",'\n'),
write("
B. Exponente mùn con multiplicaciones ",'\n'),
write("
C. Factorial de un némero ",'\n'),
write("
D. Sumatoria de 1 a N ",'\n'),
write("
E. MCD ",'\n'),
write("
F. EXIT ",'\n','\n','\n'),
write("
DIGITE OPCION: ........................... : "),
readln(N),
write('\n'),
upper_lower(E,N),
case(E),
"E" ="Q".
run if run.
/************** REGLAS ****************/
mcd(A,B,R) :- A=B, R=A.
mcd(A,B,R) :- A>B, X=A-B,
mcd(X,B,R).
mcd(A,B,R) :- A<B, Y=B-A,
mcd(A,Y,R).
fatorial(0,1):-!.
fatorial(X,Y):-Z=X-1,fatorial(Z,W),Y=X*W.
sumatoria(0,0):-!.
sumatoria(X,Y):-Z=X-1,sumatoria(Z,W),Y=X+W.
multisuma(X,1,R):- R=X,!.
multisuma(X,Y,R):- Z=Y-1,
multisuma(X,Z,W),R=X+W.
exponente(X,1,R):- R=X.
exponente(X,Y,R):- Z=Y-1,
exponente(X,Z,W), R=X*W.
/************* GOALS INTERNOS ****************/
case("A") :-
clearwindow,
write(" 1. MULTIPLICACION m*n CON SUMAS",'\n','\n'),nl,
write(" Primer digito positivo: ") and
readint(X) and nl and
write(" Segundo digito positivo: ") and
readint(Y) and nl and
multisuma(X,Y,R) and write (" EL RESULTADO ES ",R),
nl,readln(_),
fail,readln(_).
case("B") :-
clearwindow,
write(" 2. EXPONENTE mùn CON MULTIPLICACION",'\n','\n'),nl,
write(" Digito positivo: ") and
readint(X) and nl and
write(" Exponente positivo: ") and
readint(Y) and nl and
exponente(X,Y,R) and write (" EL RESULTADO ES ",R),
nl,readln(_),
fail,readln(_).
case("C") :-
clearwindow,
write(" 3. FACTORIAL DE UN NUMERO ",'\n','\n'),nl,
write(" Digite digito: ") and
readint(X) and nl and
fatorial(X,Y) and write (" El factorial es: ",Y),
nl,readln(_),
fail,readln(_).
case("D") :-
clearwindow,
write(" 4. SUMATORIA DE 1 A N ",'\n','\n'),nl,
write(" Digite digito: ") and
readint(X) and nl and
sumatoria(X,Y) and write (" La sumatoria es: ",Y),
nl,readln(_),
fail,readln(_).
case("E") :-
clearwindow,
write(" 5. MCD ",'\n','\n'),nl,
write(" Primer digito positivo: ") and
readint(A) and nl and
write(" Segundo digito positivo: ") and
readint(B) and nl and
mcd(A,B,R) and write (" EL MCD ES ",R),
nl,readln(_),
fail,readln(_).
case("F") :-
clearwindow,
cursor(10,15),
write(" FIN DEL PROGRAMA !!!"),
nl,readln(_),
exit,
nl.

